import { http } from "@/utils/http";

type Result = {
  success: boolean;
  data?: Array<any>;
};

type ResultTable = {
  success: boolean;
  data?: {
    /** 列表数据 */
    list: Array<any>;
    items: Array<any>;
    /** 总条目数 */
    total?: number;
    /** 每页显示条目个数 */
    pageSize?: number;
    /** 当前页数 */
    currentPage?: number;
    /** 总条目数 */
    totalItems?: number;
    /** 总页数 */
    totalPages?: number;
  };
};

/** 获取系统管理-用户管理列表 */
export const getUserList = (data?: object) => {
  return http.request<ResultTable>("post", "/api/user/query/pagination", {
    data
  });
};

/** 获取系统管理-用户管理列表-新增用户 */
export const addUser = (data?: object) => {
  return http.request<ResultTable>("post", "/api/user", { data });
};

/** 获取系统管理-修改用户信息 */
export const updateUser = (data?: any) => {
  return http.request<Result>("put", `/api/user/${data?.userId}`, {
    data
  });
};

/** 获取系统管理-修改用户状态 */
export const updateUserStatus = (data?: any) => {
  return http.request<Result>("put", `/api/user/${data?.userId}/status`, {
    data
  });
};

/** 获取系统管理-修改用户头像 */
export const updateUserAvatar = (data?: any) => {
  return http.request<Result>("put", `/api/user/${data?.userId}/avatar`, {
    data
  });
};

/** 获取系统管理-重置密码 */
export const resetPassword = (data?: any) => {
  return http.request<Result>("put", `/api/user/${data?.userId}/password`, {
    data
  });
};

/** 获取系统管理-删除用户 */
export const deleteUser = (data?: any) => {
  return http.request<Result>("delete", `/api/user/delete/${data?.userIds}`);
};

/** 获取系统管理-分配角色 */
export const assignRoleToUser = (data?: any) => {
  return http.request<Result>(
    "put",
    `/api/user/${data.userIds}/assign/role/${data.roleIds}`,
    {
      data
    }
  );
};

/** 系统管理-用户管理-获取所有角色列表 */
export const getAllRoleList = () => {
  return http.request<Result>("get", "/api/role/query/all");
};

/** 系统管理-用户管理-根据userId，获取对应角色id列表（userId：用户id） */
export const getRoleIds = (data?: any) => {
  return http.request<Result>("get", `/api/role/query/all/${data.userId}`);
};

/** 获取系统管理-角色管理列表 */
export const getRoleList = (data?: object) => {
  return http.request<ResultTable>("post", "/api/role/query/pagination", {
    data
  });
};

/** 获取系统管理-角色管理列表 */
export const addRole = (data?: object) => {
  return http.request<ResultTable>("post", "/api/role", { data });
};

/** 获取系统管理-修改角色信息 */
export const updateRole = (data?: any) => {
  return http.request<Result>("put", `/api/role/${data?.roleId}`, {
    data
  });
};

/** 获取系统管理-删除角色 */
export const deleteRole = (data?: any) => {
  return http.request<Result>("delete", `/api/role/delete/${data?.roleIds}`);
};

/** 获取系统管理-修改角色状态 */
export const updateRoleStatus = (data?: any) => {
  return http.request<Result>("put", `/api/role/${data?.roleId}/status`, {
    data
  });
};

/** 获取系统管理-查询全部菜单列表 */
export const getMenuList = () => {
  return http.request<Result>("get", "/api/menu/query/all");
};

/** 获取系统管理-新增菜单 */
export const addMenu = (data?: object) => {
  return http.request<Result>("post", "/api/menu", { data });
};

/** 获取系统管理-修改菜单 */
export const updateMenu = (data?: any) => {
  return http.request<Result>("put", `/api/menu/${data?.menuId}`, { data });
};

/** 获取系统管理-删除菜单 */
export const deleteMenu = (data?: any) => {
  return http.request<Result>("delete", `/api/menu/delete/${data?.menuId}`);
};

/** 获取系统管理-菜单-同步API */
export const executeSyncAPIMenu = () => {
  return http.request<Result>("put", `/api/menu/execute/webapi`);
};

/** 获取系统管理-菜单-备份菜单 */
export const backupMenuDataToJson = () => {
  return http.request<Result>("put", `/api/menu/backup/to/json/file`);
};

/** 获取系统管理-组织机构列表 */
export const getDeptList = () => {
  return http.request<Result>("post", "/api/organization/query/all");
};

/** 获取系统管理-新增组织机构 */
export const addDept = (data?: object) => {
  return http.request<Result>("post", "/api/organization", { data });
};

/** 获取系统管理-修改组织机构 */
export const updateDept = (data?: any) => {
  return http.request<Result>(
    "put",
    `/api/organization/${data?.organizationId}`,
    {
      data
    }
  );
};

/** 获取系统管理-删除组织机构 */
export const deleteDept = (data?: any) => {
  return http.request<Result>(
    "delete",
    `/api/organization/delete/${data?.organizationId}`,
    {
      data
    }
  );
};

/** 获取系统监控-在线用户列表 */
export const getOnlineLogsList = (data?: object) => {
  return http.request<ResultTable>("post", "/online-logs", { data });
};

/** 获取系统监控-登录日志列表 */
export const getLoginLogsList = (data?: object) => {
  return http.request<ResultTable>("post", "/login-logs", { data });
};

/** 获取系统监控-操作日志列表 */
export const getOperationLogsList = (data?: object) => {
  return http.request<ResultTable>("post", "/operation-logs", { data });
};

/** 获取系统监控-系统日志列表 */
export const getSystemLogsList = (data?: object) => {
  return http.request<ResultTable>("post", "/system-logs", { data });
};

/** 获取系统监控-系统日志-根据 id 查日志详情 */
export const getSystemLogsDetail = (data?: object) => {
  return http.request<Result>("post", "/system-logs-detail", { data });
};

/** 获取角色管理-权限-权限 菜单列表*/
export const getRoleMenus = () => {
  return http.request<Result>("get", "/api/menu/query");
};

/** 获取角色管理-权限-菜单权限-根据角色 id 查对应菜单 */
export const getRoleMenusByRoleId = (data?: any) => {
  return http.request<Result>("get", `/api/role/${data.roleId}/query/menu/`);
};

/** 获取角色管理-权限-菜单权限-分配菜单 */
export const assignMenuToRole = (data?: any) => {
  return http.request<Result>("put", `/api/role/${data.roleId}/assign/menu`, {
    data
  });
};

/** 上传文件 */
export const uploadFile = (data?: object) => {
  return http.request<Result>("post", `/api/upload/file`, {
    data
  });
};

/** 获取系统监控管理-在线用户 查询 */
export const getOnlineUsers = (data?: any) => {
  return http.request<ResultTable>("get", `/api/monitor/query/online/users`);
};

/** 获取系统监控管理-在线用户 强退 */
export const forceLogout = (data?: any) => {
  return http.request<ResultTable>(
    "post",
    `/api/monitor/online/user/${data.username}/forcelogout`
  );
};

/** 获取系统监控管理-登录日志 查询 */
export const getLoginLogs = (data?: any) => {
  return http.request<ResultTable>(
    "post",
    `/api/monitor/query/login/log/pagination`,
    { data }
  );
};
/** 获取系统监控管理-操作日志 查询 */
export const getOperationLogs = (data?: any) => {
  return http.request<ResultTable>(
    "post",
    `/api/monitor/query/operation/log/pagination`,
    { data }
  );
};
/** 获取系统监控管理-系统日志 查询 */
export const getSystemLogs = (data?: any) => {
  return http.request<ResultTable>(
    "post",
    `/api/monitor/query/system/log/pagination`,
    { data }
  );
};
/** 获取系统监控管理-清空日志 */
export const clearLogs = (data?: any) => {
  return http.request<ResultTable>("delete", `/api/monitor/clear/logs`, {
    data
  });
};
/** 获取租户管理-获取所有租户 */
export const getAllTenants = () => {
  return http.request<Result>("get", `/api/multitenancy/query/all`);
};

/** 获取租户管理-是否开启租户 */
export const getIsEnabledMultiTenancy = () => {
  return http.request<Result>("get", `/api/multitenancy/is/enabled`);
};
